/*
    Promise.allSettled(values)
    跟Promise.all()类似，不同点是，会把所有的情况都返回，即是是失败也会返回失败的原因和状态
    [{status: 'fulfilled', value: ''成功值}, {status: 'rejected', reason: '失败的原因'}]
 */

function read(data) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      resolve(data)
    }, 1000)
  });
}

Promise.allSettled([read('name'), read('age')])
  .then((res) => {
    console.log(res);
    res.forEach(item => {
      if(item.status === 'fulfilled') {
        // 成功的回调
        // todo...
      }
    })
  })
  .catch((err) => {
    console.log(err);
  });